﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Segmentator.Dividers
{
    /// <summary>
    /// Линейный закон изменения порога на величину заданного шага в указанных границах
    /// </summary>
    class LinerThreshold:ThresholdVariator
    {
        public static readonly string Name = "Изменение порога с заданным шагом";
        /// <summary>
        /// Шаг изменени порога
        /// </summary>
        private double Step;

        public LinerThreshold(double leftBound, double rightBound, double step) : base(leftBound, rightBound)
        {
            if (step > (Math.Abs(RightBound - LeftBound))) throw new Exception("Слишком большой шаг");
            Step = step;
            Threshold = RightBound;
        }
        /// <summary>
        /// Следующее значение порога. Первый вызов возвращает текущее значение
        /// </summary>
        /// <returns></returns>
        public override double next(double dist)
        {
            if (Threshold > LeftBound)
            {
                Threshold = RightBound;
                RightBound = RightBound - Step;
            }
            return Threshold;
        }

      
    }
}
